Visual Development Software for C

LabWindows/CVI

Features
* Interactive development environment for building instrumentation applications using the ANSI C programming language.
* Visual development tools automatically generate program outlines and function calls to minimize coding errors and accelerate program development.
* Integrated C programming tools including 32-bit C compiler, linker, debugger, and code-generation utilities.
* Intuitive graphical editor for building custom GUI displays
* Built-in libraries for GPIB, VXI, serial and plug-in DAQ boards.
* More than 500 multivendor instrument drivers simplify instrument programming
* Extensive analysis library for signal processing, statistics, curve-fitting, and complex analysis
* Networking capabilities with DDE and TCP/IP Libraries
* Available on Windows 95/NT/3.1 for the PC and Solaris for the Sun SPARCstation
* Ability to run programs developed under DOS with LabWindows
* License-free distribution of executables with National Instruments driver-level software

With LabWindows/CVI (C for Virtual Instrumentation), text-based programmers of all experience levels and backgrounds can build virtual instrumentation systems to match the specific needs of their applications. The integrated visual development environment makes it easy for you to combine data acquisition and instrument control hardware and software components into a PC-based virtual instrument. Using the open LabWindows/CVI development environment, you are free to build virtual instruments with any instrumentation hardware available using the most popular programming language in the industry - C.

LabWindows/CVI is an integrated programming environment for building instrumentation systems for ATE, test and measurement, data acquisition, and process monitoring and control applications. Built around the hardware control libraries for GPIB, VXI, serial, and plug-in DAQ instrumentation are extensive analysis and user interface programming tools, so you can build your entire application within LabWindows/CVI. And, you can augment the capabilities of LabWindows/CVI by using your existing code or libraries within the environment.

You can choose from the platforms that best fit your needs. LabWindows/CVI is available on Microsoft Windows, Windows 95 and Windows NT for the PC and Solaris for Sun SPARCStations. Because the programs you develop with LabWindows/CVI are portable across platforms, you are assured of a flexible development solution for the future. Plus, LabWindows/CVI provides a seamless migration path for DOS-based LabWindows users to move their applications to Microsoft Windows or Sun Solaris. Your long-term programming investment is safe with LabWindows/CVI.

Visual Programming for Instrumentation
With LabWindows/CVI, the key to improved programming productivity is the visual development interface for building programs. With CodeBuilder, an automatic program-generation utility, you can generate C source code on the fly, eliminating the hours of manual coding and debugging efforts required with traditional programming systems. CodeBuilder generates standard ANSI C source code that you are free to edit or enhance before compiling. With the visual development tools in LabWindows/CVI, you can significantly reduce your system time-to-market without sacrificing the power, flexibility, or performance of compiled C.

The instrumentation libraries and utilities built into LabWindows/CVI reduce many of the time-consuming programming tasks associated with traditional instrumentation system development. With the drag-and-drop User Interface Editor, GUI design is easy - no complicated graphics programming is required. Instrument drivers replace low-level instrument command programming and syntax with intuitive, high-level functions. And built-in hardware control libraries ensure trouble free integration with your GPIB, VXI, and plug-in DAQ instrumentation hardware.

Interactive C - A New Approach
LabWindows/CVI represents a new approach to instrumentation programming - an interactive approach. With LabWindows/CVI, you can take advantage of the power and performance of compiled ANSI C code with an interactive, easy-to-use programming interface. You maintain the intuitive, interpreted BASIC development style, yet are guaranteed the long-term growth and flexibility of C for your instrumentation systems. LabWindows/CVI is an ideal environment for Basic users moving to C. With function panels in LabWindows/CVI, C programmers can now execute code line by line, and experiment with instrumentation hardware on the fly.

The interactive programming tools in LabWindows/CVI are fully integrated with traditional power C programming utilities. LabWindows/CVI has a built-in, 32-bit ANSI C compiler, so your programs run fast. In addition, LabWindows/CVI has a full-functioning source editor, linker, debugger, and variable display capabilities. With the interactive tools in LabWindows/CVI, you can focus on getting your application done quickly without sacrificing the performance and flexibility of compiled ANSI C code.

Open System Architecture
LabWindows/CVI is built upon an open software architecture, so you can easily incorporate your own ANSI C-compatible libraries, existing C source code, or object code into your projects. You can also use DLLs, DDE, and TCP to extend the functionality of your applications. LabWindows/CVI delivers a flexible development framework for building instrumentation applications that can consist of many software components.


Design Graphical User Interfaces Quickly

The User Interface Editor is an interactive graphical environment for designing custom GUIs for your programs. Select from a wide variety of controls, such as pushbuttons, knobs, meters, dials, gauges, text boxes, pull-down menus, graphs, and strip charts to-build your GUI. In addition, you can import graphic images, such as PCX or BMP, onto your GUI to customize it for your system.

Each control type has a variety of attributes you can set in intuitive dialog boxes by double-clicking on a control. By setting the attributes, you can take advantage of the built-in functionality of each control for displaying and manipulating technical data. For example, you can easily configure a graph control for autoscaled axes, logarithmic axes, and interactive graph cursors from the Edit Graph Control dialog box. In addition to setting the operation of your controls and indicators, you can set the appearance, fonts, ranges, data type, and precision for each in the User Interface Editor. With the LabWindows/CVI User Interface Editor, you can accomplish a great deal of user interface "programming" without writing a single line of code!

Automatic Program Generation
Once you have designed your GUI in the User Interface Editor, you can use CodeBuilder to automatically generate your program source code. Simply pull down the Code menu and select Generate All Code to generate your program code. The result is a custom C program with callback functions set up to respond to user mouse-clicks and keypress events for each of the controls on your GUI. You simply use function panels to insert acquisition and analysis code into the program shell to complete your application.

Complete Your Application with Function Panels
To help you complete your programs, the built-in LabWindows/CVI libraries have interactive code-generation tools that help you get up to speed quickly called function panels. With function panels, you can experiment with the LabWindows/CVI library functions interactively, before you use them in a program, so you gain a good understanding of how each function works. Finally, function panels automatically generate code and place it into your source file, jump starting your coding efforts.

A function panel is a graphical representation of a LabWindows/CVI library function and its parameters. By entering values in the function panel controls, you can interactively build the function call syntax. You can then execute the function by itself to test its operation, and automatically paste the function call into your program. By experimenting with function panels, you learn not only how to use the LabWindows/CVI libraries, but you also bypass the tedious process of typing and editing function calls in your program.

Because you can generate so much of your source code automatically in LabWindows/CVI, you end up with more reliable, standardized source code that has fewer programming problems and syntax errors to debug.

Modern C Development Tools
LabWindows/CVI has a complete collection of advanced C development tools, including a source editor, compiler, linker, and debugger. These tools are completely integrated, so program development is easy - simply list each file in the Project window, and LabWindows/CVI handles all of the compiling and linking details for you when you select Run Project.

At any time during program execution, you can insert breakpoints and view program variables. You can even execute library functions interactively during a breakpoint in your program. LabWindows/CVI has built-in user protection that prevents you from common memory errors. With user protection on, you cannot overwrite arrays or strings and corrupt memory locations unknowingly. LabWindows/CVI catches these errors at execution time, saving hours of potential debugging time and effort.

The LabWindows/CVI debugging and editing utilities are available at your fingertips through toolbars you can customize. You can add breakpoints, view variable values, and generate function calls interactively through the toolbars in the LabWindows/CVI visual development environment. And, you can customize your environment to fit your own work habits by choosing from more than 75 different operations available in the toolbars.

In addition to developing your own source code, you can call external C object modules, libraries, and DLLs from your programs in LabWindows/CVI. Therefore, when you move to LabWindows/CVI as your development environment, you can maintain your existing code investment while enjoying development tools targeted specifically for instrumentation systems.

Improve Productivity with Instrument Drivers
Instrument drivers are a key development tool in LabWindows/CVI, and can cut hours or days from your development time for instrument control applications. An instrument driver is simply a set of high-level functions for acquiring data from and controlling GPIB, VXI, or serial instruments. With an instrument driver, you program with functions like Initialize, Configure, Measure, Read Waveform, and Close, instead of using cryptic ASCII command strings. In LabWindows/CVI, instrument drivers are accessed through function panels, just like any other LabWindows/CVI library. If you have an instrument driver, you no longer need to spend hours or days learning the low-level ASCII command strings and syntax for controlling the device - the instrument driver handles that for you.

The instrument driver shown here is for a Tektronix oscilloscope. The function panel shown is for the Read Waveform function. As in any other LabWindows/CVI function panel, you simply enter values in the controls and the function call is built automatically at the bottom of the screen. The Read Waveform function builds an ASCII command string for transferring a waveform from the oscilloscope, sends the string over the GPIB, VXI, or serial interface, receives the waveform data from the oscilloscope, parses the data, scales the data, and places the data in an array in memory. The instrument driver acts as a high-level translator between you and your instrument to simplify instrument programming tasks. LabWindows has a growing list of over 500 instrument drivers for all the major instrument vendors. Refer to page 2-57 for the current list of LabWindows instrument drivers.

The Acquisition and Control Libraries
The real power of LabWindows/CVI is found in the hundreds of functions that make up the instrumentation libraries. Integrated among the language tools and development utilities in LabWindows/CVI are instrumentation libraries that simplify communication with your GPIB, serial, VXIbus, and plug-in DAQ hardware.

The GPIB Library
The IEEE 488.2 Library links LabWindows/CVI with the National Instruments industry-standard NI-488.2 driver software for complete programmatic control of GPIB instruments. You can use any National Instruments IEEE 488.2 Controller boards for the PC or Sun SPARCstation in LabWindows/CVI.

The DAQ Library
The DAQ Library controls all National Instruments PC-based plug-in DAQ hardware and signal conditioning products through the NI-DAQ driver software. You can control any of the National Instruments analog, digital, or timing I/O products for PC/AT/EISA computers whether they plug-in to ISA/EISA/PCMCIA slots or connect to the parallel port. In addition, the DAQ Library controls the complete line of SCXI signal conditioning modules and chassis from National Instruments.

The RS-232 Library
The RS-232 Library has functions for performing serial communication using multiple RS-232 ports under interrupt control.

The VXI Library
The VXI Library links the industry-standard NI-VXI/VISA driver software into LabWindows/CVI to control VXI instruments from embedded VXI controllers or external computers equipped with a MXI interface. The library has functions for programming both message-based and register-based instruments.

The Networking Libraries
With the LabWindows/CVI DDE and TCP Libraries, you can pass data or control processes across a network. You can also build client or server applications in LabWindows/CVI.

The Analysis Libraries
The LabWindows Analysis Libraries offer a powerful, comprehensive set of more than 150 analysis functions for data acquisition and instrument control. The analysis functions give you complete flexibility to develop applications in areas ranging from statistical process control to DSP.

The Base Analysis Library
The Base Analysis Library (included with the LabWindows/CVI Base Package) gives you a complete set of array manipulation, complex arithmetic, and basic statistical functions. The standard Analysis Library includes such functions as:

* 1D and 2D array addition, subtraction, multiplication, and division
* Linear evaluation, max/min, and array extraction
* Complex array addition, subtraction, multiplication, and division
* Polar-to-rectangular conversion
* Mean value, standard deviation, histogram, and sort
* Dot and cross product, matrix inversion, transpose, and determinant

The Advanced Analysis Library
The Advanced Analysis Library, included with the LabWindows/CVI Advanced Analysis Library, delivers the latest technology in high-performance analytical and computational algorithms. These algorithms are packaged in standard C function calls, providing maximum flexibility for integration into your instrumentation applications. And, because each analysis function has a corresponding LabWindows/CVI function panel, you can experiment with each analysis function interactively and view the results before incorporating the function call into your program.

Built around the analysis functions are the measurement-based functions - a layer of high-level routines that simplify the integration of advanced signal processing algorithms into your instrumentation applications. These measurement based functions maintain engineering units and signal information throughout the computation process - so you get the information you need out of your acquired data quickly and easily.

Applications for the Advanced Analysis Library are unlimited. The library is rich in DSP routines, signal generation algorithms, and curve-fitting functions.

The Advanced Analysis Library contains all of the functions in the standard Analysis Library plus many others:

* Fast Fourier Transform (FFT) and Fast Hartley Transform (FHT)
* Integration, differentiation, convolution, and correlation
* Power spectrum and pulse parameters
* Digital filters
- Finite Impulse Response-windowing
and Parks-McClellan equi-ripple
- Infinite Impulse Response -Butterworth,
Chebyshev, and elliptic
* Windowing functions - Hamming, Hanning, Blackman, triangle, and Kaiser
* Signal generation
- Pulse, ramp, sine, impulse, and
triangle waveforms
* Uniform, white, and Gaussian noise
* Linear, exponential, and polynomial curve fit
* Variance, rms, moments, and median
* Complex log, exponential, power, and square root
* Advanced matrix operations

LabWindows/CVIfor Windows 95/NT
Features
* Provides simplified Windows event-driven programming for C users
* Incorporate DLLs, C libraries, and external C object modules into your programs
* Runs concurrently with other applications using Windows multitasking system
* Uses DDE for interprocess communication
* Creates stand-alone executables and compressed distribution kits automatically
Additional Features for Windows 95/NT
* Builds 32-bit DLLs on the fly - no additional compiler or development tool required
* Run-time libraries for DAQ, instrument control, analysis, and user interface available as DLLs for use with:
- Microsoft Visual C++
- Borland C++
- WATCOM C
- Symantec C
System Requirements
The minimum system is a 386/25 with 387 coprocessor and 8 MB RAM; a 486/33 with floating point capability is strongly recommended. In addition, LabWindows/CVI requires a minimum of 25 MB disk space for the application and associated files, as well as VGA graphics capability.

Overview
Microsoft Windows has revolutionized the way personal computers are used in the industry, providing a standard, intuitive interface for low-cost PCs. The fundamental shift in PC applications to Windows event-driven operation introduces new programming complexities for software developers. The visual development tools in LabWindows/CVI are designed to simplify the software development process by automating much of the event-driven program code required for Windows applications. Using LabWindows/CVI, you can quickly and easily build extensive Windows applications with dynamic, interactive GUIs without being a expert on low-level Windows operating system-level details.

In addition to simplifying Windows GUI programming issues, LabWindows/CVI can incorporate standard Windows DLLs into your programs. With DLLs, you can expand the functionality of your applications for specialized needs. Under Windows 3.1, LabWindows/CVI automatically builds the interface code between your 16-bit Windows DLLs and the 32-bit LabWindows/CVI programming environment so that you can call the library functions seamlessly. Under Windows 95 and Windows NT, both 32-bit operating systems, these DLL integration issues are greatly simplified and expanded.

New Choices for Windows 95/NT Users
Windows 95 expands on the capabilities of Windows with a simplified user interface, built-in networking capabilities, and better use of system resources. Like Windows NT, which has become popular in manufacturing and information system applications, Windows 95 is a 32-bit system. The 32-bit nature of Windows 95 and Windows NT opens a number of important new capabilities for LabWindows/CVI:

* Building DLLs on the fly - Under Windows 95 and Windows NT, LabWindows/CVI users can compile their instrumentation libraries and routines into stand-alone 32-bit DLLs for use within any standard Windows programming environment.
* Stand-alone DLLs for standard programming environments - Under Windows 95 and Windows NT, LabWindows/CVI users can develop instrumentation applications using the LabWindows/CVI libraries in any 32-bit standard C programming environment, such as Visual C++, Borland C++, and WATCOM C.
Acquisition and Control Hardware
LabWindows/CVI for Windows works with the following National Instruments hardware products:

* Multifunction I/O
* High-speed analog I/O
* Dynamic signal acquisition
* Digital I/O
* Timing I/O
* SCXI
VXI/VME - VXIpc embedded VXI controllers and computers equipped with the AT-MXI or MC-MXI interface to the VXIbus or VMEbus

RS-232 - Any standard serial port for the IBM PC or compatible computers

Part Numbers
LabWindows/CVI for Windows 95/NT/3.1
Full Development System 776800-03
Base Package 776801-01
Advanced Analysis Libraries 776802-01
VXI Development System 776804-21
Basics Training Course 910019-01
MSP 930001-02

LabWindows/CVI for Sun Solaris
Features
* Provides visual development environment for building instrumentation systems in C
* Provides ANSI C programming environment for instrumentation
* Simplifies GUI programming using Sun
* Simplifies test and measurement application development on Sun SPARCstations
* Offers workstation-class instrument controllers
* Runs concurrently with other Sun Solaris applications
* Uses TCP for network computing
* Creates executables
* Available for Solaris 1 and Solaris 2
System Requirements
The minimum system is a SPARCstation 1 with 24 MB main memory and 32 MB disk swap space. In addition, you will need a minimum of 12 MB disk space for the application and associated files.

LabWindows/CVI for Sun requires Solaris 1.x. or Solaris 2.4 or greater

If you plan to incorporate external C object files in your LabWindows/CVI projects, you must use either the Sun ANSI C compiler (acc) or the GNU C Compiler (gcc).

Overview
Sun Microsystems leads the fast-growing, high-performance workstation market. Sun computers offer a unique blend of the power and performance of a client-server computing model and the productivity of a desktop interface. LabWindows/CVI for Sun turns your SPARCstation into a workstation-class instrument controller. This combination delivers the computing power necessary for your demanding real-time instrumentation system applications.

Sun computers are already popular in the engineering and scientific markets. If you are using Sun workstations in the Electronic Computer-Aided Design (ECAD) market, LabWindows/CVI for Sun can fulfill your concurrent engineering needs for design and test. Or, if you are harnessing the power of SPARCstations for data analysis, LabWindows/CVI for Sun provides the essential link to your system - a method for acquiring the data to be analyzed.

Simplified GUI Programming
With the GUI tools in LabWindows/CVI, you can build Unix applications quickly and easily. No previous experience or knowledge of Solaris or low-level window manager operation is required. In addition, you don't need to learn C++. LabWindows/CVI provides a layer on top of Solaris, making event-driven programming faster and easier without sacrificing flexibility.

Loadable Device Drivers - The LabWindows/CVI GPIB, VXI, DAQ, and RS-232 Libraries call the standard National Instruments loadable device drivers to control instrumentation. These industry-standard drivers deliver both functionality and ease of use with intuitive, low-level C functions.

Multitasking - Under the multitasking Sun Solaris operating system, LabWindows/CVI runs concurrently with other applications. Consequently, you are free to switch to other applications without interrupting data acquisition and control operations.

Networking - LabWindows/CVI takes full advantage of Sun's commitment to network computing. LabWindows/CVI for Sun uses the TCP/IP communication protocol, so you can establish connections between LabWindows/CVI and other processes on the network. For instance, you can pass data to word processors, spreadsheets, or databases for further processing, data storage, or report generation.

Acquisition and Control Hardware
LabWindows/CVI for Sun works with the following National Instruments hardware products:

GPIB - SB-GPIB IEEE 488.2 interface board, GPIB-SCSI external controller, and GPIB-ENET external controller

VXI/VME - Computers equipped with the SB-MXI interface to the VXIbus or VMEbus

RS-232 - Any standard serial port for SPARCstation computers

Part Numbers
LabWindows/CVI for Sun
Full Development System 776820-031
MSP 930001-03
Basics Training Course 910019-01
VXI Development System 776824-231

Distributing Your Application
Any of the projects you develop in LabWindows/CVI can be compiled into an executable and run on computers throughout your facility. Distribution and resale of your LabWindows/CVI programs are royalty-free when used in conjunction with National Instruments device driver software.

Applications Assistance
National Instruments provides comprehensive customer assistance for our products. Technical support is handled by applications engineers who will promptly and courteously answer your questions. Through the LabWindows/CVI Maintenance and Support Program (MSP), you receive free upgrades, discounts on customer education, and first-priority technical support.

Customer Education
National Instruments offers LabWindows/CVI customer education courses at our headquarters in Austin, Texas, at regional locations, and at customer sites. The LabWindows/CVI course shortens your learning curve so you can develop your projects more quickly. You will learn time-saving and optimization techniques so you can develop your system to its full potential. You can schedule a three-day LabWindows/CVI course in conjunction with one of our two-day GPIB, data acquisition, or VXI courses to get up to speed on the hardware and software aspects of your system.

User Group
The LabWindows User Group is a forum for you to exchange ideas, techniques, an opinions with National Instruments and other LabWindows users in your area. User Group meetings are held throughout the year at trade shows, company sites, and regional offices. The primary functions of the user group are to provide you with information about new products, new features, and technical issues, and to provide National Instruments with information about your applications and needs.

The Instrument Library Developer Program (ILDP)
The ILDP was formed to satisfy the high demand for instrument drivers. The ILDP offers instrument manufacturers special training and other benefits for writing instrument drivers. Through the ILDP partnership with instrument vendors, the LabWindows Instrument Library continues to grow while maintaining a high standard of quality.

Alliance Program
The National Instruments Alliance Program joins system integrators, consultants, and hard-ware vendors to provide comprehensive service and expertise to our customers. By combining the general-purpose instrumentation tools and flexible hardware control in LabWindows/CVI with the expertise of Alliance Program members, National Instruments can provide focused solutions in specific application areas to our end-users. For the LabWindows consultant, the program offers product and customer education discounts, additional technical assistance, new product information, as well as referrals and comarketing opportunities. For the LabWindows user, the program ensures qualified, specialized assistance for application and system development.


Copyright 1996 National Instruments Corporation. All rights reserved. Product and company names listed are trademarks or tradenames of their respective companies.